import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

class CalculationsScreen extends StatefulWidget {
  @override
  _CalculationsScreenState createState() => _CalculationsScreenState();
}

class _CalculationsScreenState extends State<CalculationsScreen> {
  final TextEditingController _districtController = TextEditingController();
  double _averageKpIndex = 0.0;

  List<String> districts = [
    'Рязанский',
    'Скопинский',
    'Александро-Невский',
    'Ермишинский',
    'Захаровский',
    'Кадомский',
    'Касимовский',
    'Клепиковский',
    'Кораблинский',
    'Милославский',
    'Михайловский',
    'Пителинский',
    'Пронский',
    'Путятинский',
    'Рыбновский',
    'Ряжский',
    'Сапожковский',
    'Сараевский',
    'Сасовский',
    'Спасский',
    'Старожиловский',
    'Ухоловский',
    'Чучковский',
    'Шацкий',
    'Шиловский район',
  ];

  void _fetchKpIndexData() async {
    final district = _districtController.text;
    if (district.isEmpty) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Пожалуйста, введите название района')),
      );
      return;
    }

    try {
      final response = await http.get(
        Uri.parse('http://5.23.53.132:5000/get_kp_index_data/$district'),
      );

      if (response.statusCode == 200) {
        List<dynamic> kpIndices = jsonDecode(response.body)['kp_indices'];
        double sum = kpIndices.fold(0, (a, b) => a + b);
        setState(() {
          _averageKpIndex = sum / kpIndices.length;
        });
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Ошибка при получении данных')),
        );
      }
    } catch (e) {
      print('Error: $e');
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Ошибка соединения с сервером')),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Расчеты'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: <Widget>[
            DropdownButtonFormField<String>(
              value: _districtController.text,
              decoration: InputDecoration(labelText: 'Район'),
              items: districts.map((String district) {
                return DropdownMenuItem<String>(
                  value: district,
                  child: Text(district),
                );
              }).toList(),
              onChanged: (newValue) {
                setState(() {
                  _districtController.text = newValue!;
                });
              },
              validator: (value) {
                if (value == null || value.isEmpty) {
                  return 'Пожалуйста, выберите район';
                }
                return null;
              },
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _fetchKpIndexData,
              child: Text('Получить данные'),
            ),
            SizedBox(height: 20),
            Text('Средний КПУ индекс: $_averageKpIndex', style: TextStyle(fontSize: 18)),
          ],
        ),
      ),
    );
  }
}
